package org.forever.util
{
	/**
	* 列表ADT接口
	*/
	public interface List
	{
		 /**查询列表当前的规模*/
		 function getSize():int;
		 /**判断列表是否为空*/
		 function isEmpty():Boolean;
		 /**返回第一个元素（的位置）*/
		 function first():Position;
		 /**返回最后一个元素（的位置）*/
		 function last():Position;
		 /**返回紧接给定位置之后的元素（的位置）*/
		 function getNext(p:Position):Position;
		 /**返回紧靠给定位置之前的元素（的位置）*/
		 function getPrev(p:Position):Position;
		 /**将e作为第一个元素插入列表*/
		 function insertFirst(e:Object):Position;
		 /**将e作为最后一个元素插入列表*/
		 function insertLast(e:Object):Position;
		 /**将e插入至紧接给定位置之后的位置*/
		 function insertAfter(p:Position,e:Object):Position;
		 /**将e插入至紧靠给定位置之前的位置*/
		 function insertBefore(p:Position,e:Object):Position;
		 /**删除给定位置处的元素，并返回之*/
		 function remove(p:Position):Object;
		 /**删除首元素，并返回之*/
		 function removeFirst():Object;
		 /**删除末元素，并返回之*/
		 function removeLast():Object;
		 /**将处于给定位置的元素替换为新元素，并返回被替换的元素*/
		 function replace(p:Position,e:Object):Object;
		 /**元素迭代器*/
		 function elements():Iterator;
		 /**位置迭代器*/
		 function positions():Iterator;
		
	}
}